package forms;

import helpers.DateHelper;

import java.util.TreeMap;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.servlet.http.HttpServletRequest;

import data.UserData;

import models.UserModel;

public class UserForm {
	public TreeMap checkValid(HttpServletRequest request, UserModel user) {
		TreeMap form = new TreeMap();
		TreeMap check = new TreeMap();

		String username = (String) request.getParameter("username");
		String password = (String) request.getParameter("password");
		String repassword = (String) request.getParameter("repassword");
		String name = (String) request.getParameter("name");
		String gender = (String) request.getParameter("gender");
		
		if (username == null || username.isEmpty()) {
			check.put("username", "Bạn chưa nhập thông tin email.");
			user.setUsername("");
		} else {
			// Check user exists
			UserData userData = new UserData();
			if (userData.checkUserExists(username)) {
				check.put("username",
						"Email đã được đăng ký sử dụng trước đó. Vui lòng chọn hòm thư khác.");
			} else {
				Pattern p = Pattern
						.compile("^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$");
				Matcher m = p.matcher(username);
				if (!m.matches()) {
					check.put("username", "Email không hợp lệ.");
				}
			}
			user.setUsername(username);
		}

		if (name == null || name.isEmpty()) {
			check.put("name", "Bạn chưa nhập tên.");
			user.setName(name);
		} else {
			user.setName(name);
		}

		if (gender != null) {
			try {
				user.setGender(Integer.parseInt(gender));
			} catch (Exception e) {
				check.put("gender", "Giới tính không hợp lệ!");
			}
		}

		if (password == null || password.isEmpty()) {
			check.put("password", "Mật khẩu không được để trống.");
			user.setPassword("");
		} else {
			if (repassword == null || repassword.isEmpty()) {
				check.put("repassword",
						"Xác nhận mật khẩu không được bỏ trống.");
				user.setRepassword("");
			} else if (!password.equalsIgnoreCase(repassword)) {
				check.put("repassword",
						"Mật khẩu và xác nhận mật khẩu không giống nhau. Xin vui lòng nhập lại.");
				user.setRepassword(repassword);
			}
			user.setPassword(password);
			user.setRepassword(repassword);
		}

		form.put("checkValid", check);
		form.put("user", user);

		return form;
	}
	
	public TreeMap checkLogin(HttpServletRequest request, UserModel user) {
		TreeMap form = new TreeMap();
		TreeMap check = new TreeMap();

		String username = (String) request.getParameter("username");
		String password = (String) request.getParameter("password");

		if (username == null || username.isEmpty()) {
			check.put("username", "Bạn chưa nhập thông tin username.");
			user.setUsername("");
		} else {
			user.setUsername(username);
		}

		if (password == null || password.isEmpty()) {
			check.put("password", "Bạn chưa nhập thông tin mật khẩu.");
			user.setPassword("");
		} else {
			user.setPassword(password);
		}

		form.put("checkValid", check);
		form.put("user", user);

		return form;
	}
}
